# Project: UVAS/UVSRP

export CFLAGS CINCS LDLIBS CC
#VERSION = $(shell cat version.txt)
NOCYGWIN=0

LDLIBS =  -L.. -lm -luvsrp

INSTALL_LIB = /usr/local/lib
INSTALL_INC = /usr/local/include

#CFLAGS = $(CINCS) -Wall -pedantic -g3 -DUVSRP_VERSION=$(VERSION)
CFLAGS = $(CINCS) -Wall -pedantic -g3 
SRC  = uvsrp.c api.c exception.c message.c network.c session.c dispatch.c util.c url.c

#CFLAGS += -D_TRACE=10
CFLAGS += -DTCP
CFLAGS += -DUVSRP_NEW_ALLOCATION
#CFLAGS += -DSTUPID_PRINT_LINES=15
CFLAGS += -DUVSRP_THREADLESS_SERVER
CFLAGS += -DUVSRP_PACKED_MESSAGES
SRC += packet.c

# check for cygwin or mingw
CYGWIN := $(shell gcc --version | grep -c cygwin)
MINGW := $(shell gcc --version | grep -c mingw)

# do cygwin, mingw and linux specific stuff
ifneq ($(CYGWIN), 0) # cygwin
LDLIBS +=  -lpthread -lwinmm -lws2_32 #-lgmon -lcrtdll
else
ifneq ($(MINGW), 0) # mingw
LDLIBS += -lwinmm -lws2_32 -lpthreadGC
else # linux
LDLIBS += -lpthread -lm -fPIC
endif
endif

ifneq ($(NOCYGWIN), 0)
CFLAGS += -mno-cygwin
endif

OBJ = $(SRC:.c=.o)
DEPS = $(SRC:.c=.cdeps) $(TESTSRC:.c=.cdeps)
LINKOBJ = $(OBJ)
export LIB = libuvsrp.a
RANLIB = ranlib

.PHONY: all clean clean-custom test install 

all:  $(DEPS) $(OBJ) $(LIB) test

clean: clean-custom
	rm -f *.o $(TESTOBJ) *.cdeps $(LIB) *.*~
	cd ./test; make -f Makefile clean

$(LIB): $(LINKOBJ)
	$(AR) r $@ $?
	$(RANLIB) $@

test:
	cd ./test; make -f Makefile

%.o : %.c
	$(CC) -c $< -o $@ -I.. $(CFLAGS)

%.cdeps : %.c
	$(CC) -MM $< -MF $@ -I.. $(CINCS) 

install: $(LIB)
	cp $(LIB) $(INSTALL_LIB)
	cp uvsrp.h $(INSTALL_INC)

#dist: $(SRC) $(TESTSRC) $(HDR) version.txt Makefile test/Makefile  
#	tar czf uvsrp_$(VERSION).tgz $^

-include $(SRC:.c=.cdeps)
